Many modern software applications display three-dimensional representations of virtual environments as part of a user interface. Three-dimensional (3D) graphics are used in a wide range of applications including video games, simulations, virtual and augmented reality applications, geospatial information applications, and applications for mapping and navigation. In many applications, 3D graphics are more useful than two-dimensional (2D) graphics at depicting real-world environments and locations because the normal interaction between humans and the real-world occurs in three dimensions.
To display three-dimensional graphics, the computing system requires geometry information for structures and other items in the three-dimensional virtual environment along with various other pieces of data including textures and lighting information to perform the processing to produce a graphical depiction of the virtual environment. In some instances, a large number of comparatively small graphical models, such as buildings, are displayed within the virtual environment. Storing individual graphical models for a large number of buildings is often impractical, so some prior art systems employ various techniques for procedural generation to display groups of buildings using a comparatively small set of geometric data that can be stored in memory in a practical manner. Procedurally generated graphics refer to graphics, including 3D graphics, which a computing device generates using a comparatively small set of stored graphics data including models and textures and one or more computational algorithms to construct complex graphical scenes from the stored graphics data instead of storing precise geometric models for the entire virtual environment. For example, generating a cluster of buildings from a set of a few individual building models stored in the memory is one application of procedurally generated graphics.
While procedurally generated graphics reduce the requirements for complex pre-generated graphical models for a virtual environment, the prior art procedural graphics generation techniques also require substantial computing resources which are often unavailable in many embedded and lower-power computing devices such as in-vehicle navigation systems and mobile electronic devices. In particular, prior art graphical generation techniques for a large number of buildings that are arranged between blocks of streets in an urban or suburban three-dimensional environment may not be practical for use with lower power devices. For example, online mapping services such as Google Maps and Apple Maps require mobile device users to download predetermined models for all three-dimensional building models. In a dense environment with a large number of buildings, the requirement to download all building models requires the mobile electronic device to consume large amounts of network bandwidth and battery power. Consequently, improved techniques for procedural generation of graphics for large numbers of buildings in a computationally efficient manner would be beneficial.